//package com.aijk.web.admin.pay;
//
//
//import com.aijk.pay.model.Notifierinfo;
//import com.aijk.pay.model.PranListener;
//import com.aijk.pe.api.OrderRecordApi;
//import com.aijk.pe.api.PeRecordApi;
//import com.aijk.pe.model.OrderRecord;
//import com.aijk.pe.model.dto.PeRecordDto;
//import com.aijk.pe.model.qo.OrderRecordQo;
//import com.aijk.pe.model.qo.PeRecordQo;
//import com.aijk.pe.model.vo.PeRecordVo;
//import com.aijk.web.admin.utils.BeanFactoryUtils;
//import com.alibaba.fastjson.JSONObject;
//
//import java.util.*;
//
///**
// * Created by longdancao on 2016/11/03.
// */
//public class WxPePayNotifyListener implements PranListener {
//
//    @Override
//    public boolean invoke(Notifierinfo notifierinfo) {
//        try {
//            OrderRecordApi orderRecordService = BeanFactoryUtils.getBean("orderRecordApiImpl");
//            PeRecordApi peRecordApi = BeanFactoryUtils.getBean("peRecordApi");
//            OrderRecordQo orderRecordQo = new OrderRecordQo();
//            orderRecordQo.setOutTradeNo(notifierinfo.getOut_trade_no());
//            List<OrderRecord> orderRecords = orderRecordService.list(orderRecordQo);
//            if (orderRecords != null && orderRecords.size() > 0){
//                OrderRecord orderRecord =orderRecords.get(0);
//                Integer status = orderRecord.getStatus();
//                if (status >= OrderRecord.Status_Notify_0) {
//                    return true;
//                }
//                orderRecord.setNotifyTime(new Date());
//                orderRecord.setNotifyCount(orderRecord.getNotifyCount() + 1);
//                orderRecord.setNotifyParam(JSONObject.toJSONString(notifierinfo));
//                orderRecord.setTimeEnd(notifierinfo.getTime_end());
//                orderRecord.setTradeNo(notifierinfo.getTransaction_id());
//                if ("FAIL".equals(notifierinfo.getResult_code())) {
//                    orderRecord.setStatus(OrderRecord.Status_Failed);
//                    orderRecordService.update(orderRecord);
//                    orderRecordService.saveProcess(orderRecord);
//                }else {
//                    orderRecord.setPayTime(new Date());
//                    orderRecord.setStatus(OrderRecord.Status_Notify_0);
//                    orderRecordService.update(orderRecord);
//                    orderRecordService.saveProcess(orderRecord);
//                    orderRecord.setStatus(OrderRecord.Status_Notify_1);
//                    orderRecordService.update(orderRecord);
//                    orderRecordService.saveProcess(orderRecord);
//                    boolean success = false;
//                    if (orderRecord.getTradeSource() == OrderRecord.Trade_Source_Pe){
//                        PeRecordQo peRecordQo = new PeRecordQo();
//                        peRecordQo.setOutTradeNo(orderRecord.getOrderNo());
//                        List<PeRecordVo> peRecordVos = peRecordApi.list(peRecordQo);
//                        if (peRecordVos != null && peRecordVos.size() > 0){
//                            PeRecordDto peRecordDto = new PeRecordDto();
//                            peRecordDto.setId(peRecordVos.get(0).getId());
//                            peRecordDto.setPayWay((byte)2);
//                            peRecordDto.setPayStatus((byte)1);
//                            peRecordApi.update(peRecordDto);
//                            success = true;
//                        }
//                    }
//                    if (success) {
//                        orderRecord.setTimeEnd(new Date().getTime() + "");
//                        orderRecord.setStatus(OrderRecord.Status_Finish);
//                        orderRecordService.update(orderRecord);
//                        orderRecordService.saveProcess(orderRecord);
//                    } else {
//                        orderRecord.setStatus(OrderRecord.Status_Notify_2);
//                        orderRecordService.update(orderRecord);
//                        orderRecordService.saveProcess(orderRecord);
//                    }
//                }
//                return true;
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return false;
//    }
//}
